#include "main.h"


void Key_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2  | GPIO_Pin_4 | GPIO_Pin_0 | GPIO_Pin_3;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);	
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_10 | GPIO_Pin_11;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);	
}


uint8_t KeyGetNum(u8 Mode)
{
	static uint8_t Key_flag = 1;  //按键松开标志

	if(Mode == 1) 		//连续按键按下
	{
		Key_flag = 1;			
	}
	if ( (Key_flag == 1) && (!KEY_A0 || !KEY_A3 || !KEY_A6 || !KEY_A7  
								     || !KEY_B0 || !KEY_B1 || !KEY_B10 || !KEY_B11))  //任意一个按键按下
	{
		Key_flag = 0;
		Delay_ms(10);  //延时消抖				

		if (KEY_A0 == 0)      {return KEY_A0_FLAG;}
		else if (KEY_A3 == 0) {return KEY_A3_FLAG;}
		else if (KEY_A6 == 0) {return KEY_A6_FLAG;}
		else if (KEY_A7 == 0) {return KEY_A7_FLAG;}		
		else if (KEY_B0 == 0) {return KEY_B0_FLAG;}
		else if (KEY_B1 == 0) {return KEY_B1_FLAG;}	
		else if (KEY_B10 == 0){return KEY_B10_FLAG;}
		else if (KEY_B11 == 0){return KEY_B11_FLAG;}					
	
	}
	else if (KEY_A0 == 1 && KEY_A3 == 1 && KEY_A5 == 1 && KEY_A6 == 1 
						 && KEY_A7 == 1 && KEY_B0 == 1 && KEY_B1 == 1 
						 && KEY_B10 == 1 && KEY_B11 == 1)  //无按键按下
	{
		Key_flag = 1;
	}
	return 0;
}

uint8_t KEY_A2_Lock_flag;
uint8_t KEY_A2_cnt;

uint8_t Key_Scan(void)
{
	uint8_t KeyNum = 0;
	
	if (KEY_A0 == 1)
	{
		KEY_A2_Lock_flag = 0;
		KEY_A2_cnt = 0;
	}
	else if (!KEY_A2_Lock_flag)
	{
		KEY_A2_cnt++;
		if (KEY_A2_cnt > 100)
		{
			KEY_A2_Lock_flag = 1;
			KEY_A2_cnt = 0;			
			return 1;
		}
	}
	return KeyNum;
}


